#ifndef _CALLBACK_HANDLER_H_
#define _CALLBACK_HANDLER_H_

namespace share
{

class CallbackHandlerBase
{
public:
	virtual ~CallbackHandlerBase( void ) {}
	virtual void invoke( ) = 0;
};

template < class CALLBACKER >
class CallbackHandler: public CallbackHandlerBase
{
public:
	CallbackHandler( const CALLBACKER &callbacker )
		: callbacker_( callbacker )
	{

	}
	virtual ~CallbackHandler( void )
	{

	}
	virtual void invoke( )
	{
		callbacker_( );
	}
	CALLBACKER	callbacker_;
};

}
#endif